package saa.dominio.periodo.aluno;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

import saa.dominio.periodo.Avaliacao;

@Entity
@NamedQueries({
    @NamedQuery(name = "AvaliacaoAlunos", query = "SELECT a FROM AvaliacaoAluno a ORDER BY a.avaliacao.dataAvaliacao"),
    @NamedQuery(name = "AvaliacaoAluno.id", query = "SELECT a FROM AvaliacaoAluno a WHERE a.unidadeDisciplinaAluno.id = :id ORDER BY a.avaliacao.dataAvaliacao")})
public class AvaliacaoAluno implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(nullable = false)
    @ManyToOne
    private Avaliacao avaliacao;
    @Column(nullable = false)
    @ManyToOne
    private UnidadeDisciplinaAluno unidadeDisciplinaAluno;
    @Column(nullable = false)
    private int nota;

    public AvaliacaoAluno() {
        super();
    }

    public AvaliacaoAluno(Avaliacao avaliacao, UnidadeDisciplinaAluno unidadeDisciplinaAluno) {
        this.avaliacao = avaliacao;
        this.unidadeDisciplinaAluno = unidadeDisciplinaAluno;
        this.nota = -1;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Avaliacao getAvaliacao() {
        return avaliacao;
    }

    public void setAvaliacao(Avaliacao avaliacao) {
        this.avaliacao = avaliacao;
    }

    public UnidadeDisciplinaAluno getUnidadeDisciplinaAluno() {
        return unidadeDisciplinaAluno;
    }

    public void setUnidadeDisciplinaAluno(UnidadeDisciplinaAluno unidadeDisciplinaAluno) {
        this.unidadeDisciplinaAluno = unidadeDisciplinaAluno;
    }

    public int getNota() {
        return nota;
    }

    public void setNota(int nota) {
        this.nota = nota;
    }

}
